package com.fh.shop.api.cate.biz;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fh.shop.api.cate.mapper.ICateMapper;
import com.fh.shop.api.cate.po.Cate;
import com.fh.shop.api.common.ServerResponse;
import com.fh.shop.api.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service("cateService")
@Slf4j
public class ICateServiceImpl implements ICateService {
    @Autowired
    private ICateMapper cateMapper;

    @Override
    public ServerResponse findList() {
        // 先从缓存中找
        String cateListJson = RedisUtil.get("cateList");
        // 缓存中有，直接返回，响应给客户端
        if (StringUtils.isNotBlank(cateListJson)) {
            log.info("从缓存中查询分类....");
            // 怎么把json字符串转换为java对象？？？
            List<Cate> cates = JSON.parseArray(cateListJson, Cate.class);
            // 返回
            return ServerResponse.success(cates);
        }
        // 缓存中没有，查询数据库
        List<Cate> cates = cateMapper.selectList(null);
        // 怎么把java对象转换为json字符串???[java对象和json格式的字符串之间互为转换]
        // 自己调用第三方工具中的方法来完成[阿里的fastjson]
        String catesJson = JSON.toJSONString(cates);
        // 往缓存中放一份
        RedisUtil.set("cateList", catesJson);
        // 返回，响应给客户端
        return ServerResponse.success(cates);
    }
}
